1. Field of the Invention
The present invention relates to the field of application servers, and more particularly to systems and methods for interfacing between enterprise information systems or back-end systems and application servers or other applications.
2. Description of the Related Art
Enterprise applications may access functions and data associated with applications running on back-end systems. A back-end system may provide information infrastructure for an enterprise by offering a set of services to enterprise applications. These services may be exposed to client applications as local and/or remote interfaces. Examples of back-end systems may include, but are not limited to, enterprise resource planning (ERP) systems providing business objects to client applications, mainframe transaction processing (TP) systems providing transaction programs to client applications, customer relationship management (CRM) systems, and legacy database systems providing records to client applications.
An application server collaborates with back-end systems to keep system-level mechanisms (e.g. transaction management, security, and connection management) transparent from the enterprise applications. As a result, an enterprise application provider may focus on the development of business and presentation logic for its application components and need not get involved in the system-level issues related to back-end system integration. This may lead to an easier and faster cycle for the development of scalable, secure, and transactional enterprise applications that require connectivity with multiple back-end systems.
FIG. 1 illustrates a typical three-tier enterprise application system. Client tier 104 comprises clients 90A and 90B which access middle tier 102 for content. Clients 90A and 90B may be networked devices such as desktop computers, cellular devices, and/or personal digital assistants. In middle tier 102, enterprise server 108 provides content to clients 90A and 90B. Enterprise server 108 may comprise applications that apply business and presentation logic to data and functionality from back-end systems tier 100. Enterprise server 108 may comprise a web server and/or an application server. Enterprise server 108 may comprise a cluster of servers. Middle tier 102 may provide management services to back-end systems tier 100. Examples of management services include, but are not limited to, a connection pooling service, a transaction management service, and a security management service. Back-end systems tier 100 may be comprised of heterogeneous enterprise information systems including database 110 and legacy system 112. Database 110 and legacy system 112 may provide enterprise server 108 with data and functionality. Database 110 and legacy system 112 may use the management services provided by enterprise server 108. Enterprise server 108 may interface with database 110 and legacy system 112 using a resource adapter. The resource adapter may provide database 110 and legacy system 112 an interface for accessing the management services provided by a server of middle tier 102.
A resource adapter is a system-level software driver that is used by an application to connect to a back-end system. The resource adapter provides connectivity between the back-end system, the application server, and the enterprise application. Prior to the establishment of the Java Connector Architecture (JCA) of Java 2, Enterprise Edition (J2EE), enterprise application integration vendors produced proprietary resource adapters built to work with their products. Thus, a different resource adapter existed not only for each different back-end system, but also for each different application server.
The JCA is an architecture for integration of J2EE compliant servers with back-end systems. There are two parts to the JCA: a back-end system vendor-provided resource adapter and an application server that allows this resource adapter to plug in. The JCA defines a set of contracts (e.g., transactions, security, and connection management) that a resource adapter must support to plug into an application server. The JCA includes a standard deployment and packaging protocol for resource adapters.
A resource adapter conforming to the JCA includes a common client interface (CCI) and a service provider interface (SPI). The CCI provides a back-end system independent application programming interface (API) for coding function calls identifying a native back-end system function to call, specifying input data to the back-end system, and processing output data from the back-end system. The SPI integrates the transaction, security and connection management facilities of an application server with those of a transactional resource manager, for example. The SPI provides the back-end system with access to the application server's management services.
Resource adapters conforming to the JCA are used in two environments: a managed environment and a non-managed environment. A managed environment defines an operational environment for a J2EE-based, multi-tier, web-enabled application that accesses back-end systems. The application may include of one or more application components that are deployed on application server containers. The containers can be web containers that host Java server pages, servlets, and static HTML pages; enterprise Java beans (EJB) containers that host EJB components; or application client containers that host standalone application clients. In a managed environment, the application server must comply with J2EE and JCA to provide a complete set of management services including a transaction management service, a connection management service, and a security management service.
A non-managed environment defines an operational environment for a two-tier application. An application client directly uses a resource adapter to access the back-end system, which defines the second tier for a two-tier application. No management services are provided through a server to the back-end system.
FIG. 2 illustrates a typical resource adapter 114 implemented according to the Java Connector Architecture of Java 2, Enterprise Edition. In a fully managed environment, resource adapter 114 allows interaction between application component 106, J2EE compliant application server 92, and back-end system 112 through client interface 118, service provider interface 124, and back-end system specific interface 120. Service provider interface 124 must be implemented according to the Java Connector Architecture (JCA). Service provider interface 124 provides the back-end system access to management services provided by application server 92. Application server 92 must provide management services specified by the JCA including connection management service 94, a transaction management service 96, and a security management service 98. Client interface 118 may be implemented according to the JCA's Common Client Interface (CCI). Client interface 118 provides application component 106 access to functionality from back-end system 112 and data from back-end system 112. Application server 92 may host application component 106 within an application component container, or application component 106 may comprise an autonomous application. Back-end system specific interface 120 is particular to each different back-end system. Back-end system interface 120 allows back-end system 112 to communicate and use management services through client interface 118 and service provider interface 124 respectively. In the non-managed case, there is no server 92 providing management services to back-end system 112.
The JCA does not support connectivity between a server and back-end systems if the server does not fall into the managed environment or non-managed environment category. Thus, other than in completely non-managed environments, a standard resource adapter may not be available for systems that do not provide for a fully managed environment with a J2EE-compliant application server as required by JCA.